软件工程


敏捷开发

敏捷框架比较

https://www.toutiao.com/a6491064662996566542/
  1. Scrum

    Scrum是一个管理框架。

    * User Story
    
    * Task。它可以与用户故事相关或不相关。
    
    * Backlog。用户故事和未来Sprint任务的列表。
    
    * Sprint backlog。从Backlog的当前Sprint中挑选用户故事和任务列表(又名“工作项目”)。
    
    * Product increment。在Sprint结束时交付的一种潜在可交付功能块。
    
    * Extensions。像Burndown Chart、Velocity等的报告,用于跟踪团队的进展。
    

    角色

    * 开发团队。包括开发人员、QA工程师、UI/UX设计师、业务分析师以及其他需要的人员。Scrum团队通常有3到9名成员。当9个人还不够时,团队就一分为二了。
    
    * Scrum Master。主持每日Scrum会议、策划/更新/回顾会议,并帮助团队成员解决沟通问题。Scrum Master不是团队成员,所以他们可以同时与多个团队合作。
    
    * 产品所有者。利益相关者的代表,将Scrum团队的愿景(作为用户故事的基础)传达给Scrum团队,在每个Sprint结束时优先考虑用户故事,并接受或拒绝他们。
    
  2. Kanban

    Kanban框架是由丰田工程师Taiichi Ohno发明的。

    原则

    1. 专注—减少多任务;
    
    2. 减少浪费;
    
    3. 客户的需求放在第一位(即他们的业务需求-ROI);
    

    Kanban和Scrum的关键区别在于:

    Kanban是连续的,而Scrum是迭代的。
    Kanban更适合在Sprint期间有大量计划外工作(支持问题;紧急修复;紧急功能请求)的团队。
    通过这种方式,团队可以随时重新排序任务,不再需要等待Sprint结束。
    
  3. Lean

    Lean大量借用了Kanban

    Lean尽量避免浪费,最大限度地为客户带来价值。

    与Kanban不同的是,Lean有一些关于工程实践的规定(例如TDD)。与此同时,Lean对交付时间的要求不那么严格,团队可能随时准备部署。

  4. XP - 极限编程

    XP不只是简单的平等配对编程,XP还提供了一个流程管理算法

    实践

    1. 计划游戏;
    
    2. 测试驱动开发(“先写单元测试”);
    
    3. 配对编程;
    
    4. 团队(客户/程序的实际用户可用于反馈);
    
    5. 持续集成;
    
    6. 重构设计改进;
    
    7. 小版本;
    
    8. 编码标准;
    
    9. 集体代码所有权;
    
    10. 设计简单;
    
    11. 系统隐喻(以程序员,客户和其他人理解的方式命名事物);
    
    12. 可持续性。